Subject: DLSw Version 0.13, Chapter 5, State Machines (1 of 3)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Mon, 3 Oct 94 15:32:59 PDT

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 1
X-Sun-Content-Length: 68

Here is the first part of three for Chapter 5 of DLSw Version 0.13

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: d5a.txt
X-Sun-Content-Lines: 373
X-Sun-Content-Length: 15386



RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

5. DLSw State Machine

   The following state tables describe the states for a single connection
   through the Data Link Switch.  State information is kept for each
   connection.  The initial state for a connection is DISCONNECT.  The
   steady state is either CIRCUIT_ESTABLISHED or CONNECTED.  In the former
   state, an end-to-end circuit has been established allowing the support
   of Type 1 LLC between the end systems.  The latter state exists when an
   end-to-end connection has been established for the support of Type 2 LLC
   services between the end systems.

   For SNA, circuit establishment is via the use of IEEE 802.2 Test or XID
   frames.  SNA devices send these frames to the null SAP in order to
   determine the source route information in support of bridging.  Normally
   SNA devices use SAP 0x04, 0x08, or 0x0C  (most SNA LLC2 devices that
   have a single PU per MAC address use a default of 0x04).  Typically the
   SAP would be used to determine if the Test frames should be sent to the
   DLSw code in the router.  If both bridging and DLSw are enabled, this
   allows the product to ensure that SNA frames are not both bridged and
   switched.  Note that although typically SNA uses a DSAP and SSAP of
   0x04, it allows for other SAPs to be configured and supports unequal
   SAPs.  This allows multiple PUs to share connections between two given
   MAC addresses (each PU to PU session uses one LLC2 connection).

   For NetBIOS, circuit establishment is via the Name Query and Name
   Recognized frames.  These frames are used for both address resolution
   and source route determination.  NetBIOS devices use SAP 0xF0.

5.1. Data Link Switch States

   The Switch-to-Switch Protocols will be formally defined through a single
   state machine.  The following table lists the eleven possible states.  A
   separate state machine is employed for each end-to-end circuit that is
   maintained by the Data Link Switch.

   State Name            Description
   ----------            -----------
   CIRCUIT_ESTABLISHED   The end-to-end circuit has been
                         established.  At this time LLC Type 1
                         services are available from end-to-end.

   CIRCUIT_PENDING       The target DLSw is awaiting a REACH_ACK
                         response to an ICANREACH message.

   CIRCUIT_RESTART       The DLSw that originated the reset is
                         awaiting the restart of the data link
                         and the DL_RESTARTED response to a
                         RESTART_DL message.

   CIRCUIT_START         The origin DLSw is awaiting a ICANREACH_cs in
                         response to a CANUREACH_cs message.

AIW DLSw Related Interest Group                              [Page 25]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   CONNECTED             The end-to-end connection has been
                         established thereby allowing LLC Type 2
                         services from end-to-end in addition to
                         LLC Type 1 services.

   CONNECT_PENDING       The origin DLSw is awaiting the CONTACTED
                         response to a CONTACT message.

   CONTACT_PENDING       The target DLSw is awaiting the
                         DLC_CONTACTED confirmation to a DLC_CONTACT
                         signal (i.e., DLC is waiting for a UA
                         response to an SABME command).

   DISCONNECTED          The initial state with no circuit or
                         connection established, the DLSw is awaiting
                         either a CANUREACH, an ICANREACH, a
                         NETBIOS_NQ, or a NETBIOS_NR message.

   DISCONNECT_PENDING    The DLSw that originated the disconnect
                         is awaiting the DL_HALTED response to a
                         HALT_DL message.

   HALT_PENDING          The remote DLSw is awaiting the DLC_DL_HALTED
                         indication following the DLC_HALT_DL request
                         (i.e., DLC is waiting for a UA response to a
                         DISC command), due to receiving a HALT_DL
                         message.

   HALT_PENDING_NOACK    The remote DLSw is awaiting the DLC_DL_HALTED
                         indication following the DLC_HALT_DL request
                         (i.e., DLC is waiting for a UA response to a
                         DISC command), due to receiving a
                         HALT_DL_NOACK message.

   RESTART_PENDING       The remote DLSw is awaiting the DLC_DL_HALTED
                         indication following the DLC_HALT_DL request
                         (i.e., DLC is waiting for a UA response to a
                         DISC command), and the restart of the data
                         link.

   RESOLVE_PENDING       The target DLSw is awaiting either the
                         DLC_DL_STARTED indication following the
                         DLC_START_DL request (i.e., DLC is waiting
                         for a Test response as a result of sending a
                         Test command), or a NB_Name_Recognized
                         frame in response to a NB_Name_Query frame.

                  Table 2.  Data Link Switch States

   The DISCONNECT state is the initial state for a new circuit.  One end
   station starts the connection via a TEST or XID command (i.e.,
   DLC_RESOLVE_C) or a NetBIOS Name Query command (not explicitly shown).

AIW DLSw Related Interest Group                              [Page 26]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Upon receipt, the Data Link Switches exchange a set of CANUREACH_ex,
   CANUREACH_cs, ICANREACH and REACH_ACK messages.  Upon completion of this
   four-legged exchange (note this was a "three-legged exchange" in RFC
   1434), both Data Link Switches will be in the CIRCUIT_ESTABLISHED state.
   Two pending states also exist during this exchange.  The RESOLVE_PENDING
   state is entered by the target Data Link Switch awaiting a Test response
   to a Test Command and the CIRCUIT_PENDING state is entered by the target
   DLSw awaiting the REACH_ACK reply to an ICANREACH message.

   The CIRCUIT_ESTABLISHED state allows for the exchange of LLC Type 1
   frames such as the XID exchanges between SNA stations that occurs prior
   to the establishment of a connection.  Also, datagram traffic (i.e., UI
   frames)  may be sent and received between the end stations. These
   exchanges use the XIDFRAME and DGRMFRAME messages sent between the Data
   Link Switches.

   In the CIRCUIT_ESTABLISHED state, the receipt of a SABME command (i.e.,
   DLC_CONTACTED) causes the origin DLSw to issue a CONTACT message, to
   send an RNR supervisory frame (i.e., DLC_ENTER_BUSY) to the origin
   station, and to enter the CONNECT_PENDING state awaiting a CONTACTED
   message.  The target DLSw, upon the receipt of a CONTACT message, will
   issue a SABME command (i.e., DLC_CONTACT) and enter the Contact Pending
   state.  Once the UA response is received (i.e., DLC_CONTACTED), the
   target DLSw sends a CONTACTED message and enters the CONNECTED state.
   When received, the origin DLSw enters the Connected state and sends an
   RR supervisory frame (i.e., DLC_EXIT_BUSY).

   The CONNECTED state is the steady state for normal data flow once a
   connection has been established.  Information frames (i.e., INFOFRAME
   messages) are simply sent back and forth between the end points of the
   connection.  This is the path that should be optimized for performance.

   The connection is terminated upon the receipt of a DISC frame or under
   some other error condition detected by DLC (i.e., DLC_ERROR). Upon
   receipt of this indication, the DLSw will halt the local data link, send
   a HALT_DL message to the remote DLSw, and enter the DISCONNECT_PENDING
   State.  When the HALT_DL frame is received by the other DLSw, the local
   DLC is halted for this data link, a DL_HALTED message is returned, and
   the DISCONNECTED state is entered.  Receipt of this DL_HALTED message
   causes the other DLSw to also enter the DISCONNECTED state.

   The CIRCUIT_RESTART state is entered if one of the Data Link Switches
   receives a SABME command  (i.e., DLC_RESET) while in the CONNECTED
   state.  This causes a DM command to be returned to the origin station
   and a RESTART_DL message to be sent to the remote Data Link Switch. This
   causes the remote data link to be halted and then restarted.  The remote
   DLSw will then send a DL_RESTARTED message back to the first DLSw.  The
   receipt of the DL_RESTARTED message causes the first DLSw to issue a new
   CONTACT message, assuming that the local DLC has been contacted (i.e.,
   the origin station has resent the SABME command).  This is eventually
   responded to by a CONTACTED message.  Following this exchange, both Data
   Link Switches will return to the CONNECTED state.  If the local DLC has
   not been contacted, the receipt of a DL_RESTARTED command causes the

AIW DLSw Related Interest Group                              [Page 27]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Data Link Switch to enter the CIRCUIT_ESTABLISHED state awaiting the
   receipt of a SABME command (i.e., DLC_CONTACTED signal).

   The HALT_PENDING and RESTART_DL states have only one input event and
   only one output action.  While in these states, the Data Link Switch is
   awaiting responses from the local station on the adjacent LAN (i.e., a
   UA response to a DISC command). Also in the RESTART_PENDING state, the
   Data Link Switch will attempt to restart the data link prior to sending
   a DL_RESTARTED message.  For some implementations, the start of a data
   link involves the exchange of a Test command/response on the adjacent
   LAN (i.e., DLC_START_DL).  For other implementations, this additional
   exchange may not be required.

5.2. State Transition Tables

   This section provides a detailed representation of the Data Link Switch,
   as document by a set of state machines.  The first state machine
   documents the sending and receiving of SSP messages.  Many of the
   transitions are dependent upon local signals between the Data Link
   Switch entity and one of the DLC entities.  These signals and their
   definitions are given in the following tables.

   DLC Events:

AIW DLSw Related Interest Group                              [Page 28]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Event Name      Description
   ----------      -----------
   DLC_CONTACTED   Contact Indication:  DLC has received an SABME
                   command or DLC has received a UA response as a
                   result of sending an SABME command.

   DLC_DGRM        Datagram Indication:  DLC has received a UI frame.

   DLC_ERROR       Error condition indicated by DLC:  Such a
                   condition occurs when a DISC command is received
                   or when DLC experiences an unrecoverable error.

   DLC_INFO        Information Indication:  DLC has received an
                   Information (I) frame.

   DLC_DL_HALTED   Data Link Halted Indication:  DLC has
                   received a UA response to a DISC command.

   DLC_DL_STARTED  Data Link Started Indication:  DLC has
                   received a Test response from the null SAP.

   DLC_RESET       Reset Indication:  DLC has received an SABME
                   command during the time a connection is
                   currently active and has responded with DM.

   DLC_RESOLVE_C   Resolve Command Indication:  DLC has received
                   a Test command addressed to the null SAP, or an
                   XID command addressed to the null SAP.

   DLC_RESOLVED    Resolve request:  DLC has received a TEST response
                   frame (or equivalent for non-LAN DLCs) but has not
                   reserved the resources required for a circuit yet.

   DLC_XID         XID Indication:  DLC has received an XID command
                   or response to a non-null SAP.

   Other Events:

   Event Name      Description
   ----------      -----------
   XPORT_FAILURE   Failure of the transport connection used by the
                   circuit.

   CS_TIMER_EXP    The CIRCUIT_START timer (started when the circuit
                   went into CIRCUIT_START state) has expired.

                  Table 3.  Local DLC Events

AIW DLSw Related Interest Group                              [Page 29]

RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   DLC Actions:

   Action Name     Description
   -----------     -----------
   DLC_CONTACT     Contact Station Request:  DLC will send a SABME
                   command or a UA response to an outstanding SABME
                   command.

   DLC_DGRM        Datagram Request:  DLC will send a UI frame.

   DLC_ENTER_BUSY  Enter Link Station Busy:  DLC will send an
                   RNR supervisory frame.

   DLC_EXIT_BUSY   Exit Link Station Busy:  DLC will send an RR
                   supervisory frame.

   DLC_HALT_DL     Halt Data Link Request:  DLC will send a DISC
                   command.

   DLC_INFO        Information Request:  DLC will send an I frame.

   DLC_RESOLVE     Resolve request:  DLC should issue a TEST (or
                   appropriate equivalent for non-LAN DLCs) but need
                   not reserve the resources required for a circuit yet.

   DLC_RESOLVE_R   Resolve Response Request:  DLC will send a
                   Test response or XID response from the null SAP.

   DLC_START_DL    Start Data Link Request:  DLC will send a Test
                   command to the null SAP.

   DLC_XID         XID Request:  DLC will send an XID command or an
                   XID response.

   Other Actions:

     Action Name     Description
     ----------      -----------
     START_CS_TIMER  Start the CIRCUIT_START timer.

                         Table 4.  Local DLC Actions

   DLC_RESOLVE_R and DLC_START_DL actions require the DLC to reserve the
   resourses necessary for a link station as they are used only when a
   circuit is about to be started.  The DLC_RESOLVE action is used for
   topology explorer traffic and does not require such resources to be
   reserved, though a DLC implementation may choose not to distinguish this
   from the DLC_START_DL action.  See section 5. for details of the use of
   the DLC_RESOLVE and DLC_RESOLVED action and event for explorer frames.

   The Data Link Switch may be described by a state transition table as
   documented in the following sections.  Each of the states is described
   below in terms of the events, actions, and next state for each

AIW DLSw Related Interest Group                              [Page 30]